<?php

namespace app\controller;

use app\BaseController;
use app\model\Parameter;

/**
 * 参数配置
 * Class ParameterController
 * @package app\controller
 * @author 下雨吧จุ๊บ
 */
class ParameterController extends BaseController
{
    /**
     * @apiGroup 参数配置
     * @apiVersion 1.0.0
     * @api {GET} /parameter  参数列表
     * @apiDescription 参数列表
     * @apiParam {String} pid 参数类别id
     * @apiSuccessExample SuccessExample 成功事例
     * HTTP/1.0.0 200
     * {
     * status: 1,
     * data: 参数列表,
     * message: '获取参数列表成功'
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function index()
    {
        $data = input();
        //id验证
        if (empty($data['listRows'])) {
            $data['listRows'] = '8';
        }
        if (empty($data['pid'])) {
            $data['pid'] = 77;
        }
        $data['list'] = Parameter::where('pid', $data['pid'])
            ->paginate([
                'list_rows' => $data['listRows'],
                'page' => $data['page'],
            ]);
        success($data, '获取参数列表成功');
    }

    /**
     * @apiGroup 参数配置
     * @apiVersion 1.0.0
     * @api {POST} /parameter  新增保存
     * @apiDescription 新增保存
     * @apiParam {String} pid 参数类别id(必填*)
     * @apiParam {String} title 参数名(必填*)
     * @apiParam {String} status 状态(必填*)
     * @apiSuccessExample SuccessExample 成功事例
     * HTTP/1.0.0 200
     * {
     * status: 1,
     * message: '新增成功'
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function save()
    {
        $data = input();
        //必填项验证
        if (empty($data['pid'])) {
            error('520数据错误(Missing parameter pid)');
        }
        if (empty($data['title'])) {
            error('请填写参数名称');
        }
        if (empty($data['status'])) {
            error('请选择状态');
        }
        //重复验证
        $is_setParameter = Parameter::where('title', $data['title'])->where('pid', $data['pid'])->field('id')->find();
        if (!empty($is_setParameter)) {
            error('该参数名称已存在');
        }
        //添加
        $result = Parameter::insert($data);
        if ($result) {
            success(array(), '新增成功');
        }
        error('新增失败');
    }

    /**
     * @apiGroup 参数配置
     * @apiVersion 1.0.0
     * @api {GET} /parameter/:id  编辑读取
     * @apiDescription 编辑页面(:id是指参数id,直接写在路由中)
     * @apiSuccessExample SuccessExample 成功事例
     * HTTP/1.0.0 200
     * {
     * status: 1,
     * data: array
     * message: '获取数据成功'
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function read()
    {
        $data = input();
        //必填项验证
        if (empty($data['id'])) {
            error('520数据错误(Missing parameter id)');
        }
        //返回参数详情
        $data['info'] = Parameter::where('id', $data['id'])->find();
        success($data, '获取数据成功');
    }

    /**
     * @apiGroup 参数配置
     * @apiVersion 1.0.0
     * @api {PUT} /parameter/:id  编辑保存
     * @apiDescription 编辑页面保存(:id是指参数id,直接写在路由中)
     * @apiParam {String} title 参数名称(必填*)
     * @apiSuccessExample SuccessExample 成功事例
     * HTTP/1.0.0 200
     * {
     * status: 1,
     * message: '保存成功'
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function update()
    {
        $data = input();
        //必填项验证
        if (empty($data['id'])) {
            error('520数据错误(Missing parameter id)');
        }
        //更新数据
        $result = Parameter::where('id', $data['id'])->save($data);
        success(array(), '保存成功');
    }

    /**
     * @apiGroup 参数配置
     * @apiVersion 1.0.0
     * @api {DELETE} /parameter/0  删除
     * @apiDescription 删除(路由中直接写0,ids集合使用参数传递)
     * @apiParam {array} ids id集合
     * @apiSuccessExample SuccessExample 成功事例
     * HTTP/1.0.0 200
     * {
     * status: 1,
     * message: '删除成功'
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function delete()
    {
        $data = input();
        //必填项验证
        if (empty($data['ids'])) {
            error('520数据错误(Missing parameter id)');
        }
        $result = Parameter::whereIn('id', $data['ids'])->delete();
        success(array(), '删除成功');
    }

    /**
     * @apiGroup 参数配置
     * @apiVersion 1.0.0
     * @api {GET} /parameter/create  参数列表搜索
     * @apiDescription 参数列表搜索
     * @apiParam {String} pid 所属类型id(为空时,搜索引擎定为所有类型)
     * @apiParam {String} keywords 输入关键词(为空时,搜索引擎定为所有数据)
     * @apiSuccessExample SuccessExample 成功事例
     * HTTP/1.0.0 200
     * {
     * status: 1,
     * data: 搜索结果,
     * message: '获取数据成功'
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function create()
    {
        $data = input();
        if (empty($data['pid'])) {
            $keyword['list'] = Parameter::where('title', 'like', '%' . $data['keywords'] . '%')->select();
        } else {
            $keyword['list'] = Parameter::where('title', 'like', '%' . $data['keywords'] . '%')->where('pid', $data['pid'])->select();
        }
        success($keyword, '筛选成功');
    }
}
